草庐IT

Python NotImplemented 常量

全部标签

c++ - 对临时的常量引用

看完thisarticle在HerbSutter的博客上,我做了一些实验,遇到了一些让我困惑的事情。我使用的是VisualC++2005,但如果它依赖于实现,我会感到惊讶。这是我的代码:#includeusingnamespacestd;structBase{//Base(){}~Base(){cout运行时,它会显示“~Base()”两次...但是如果我取消注释构造函数,它只会显示一次!有人对此有解释吗? 最佳答案 这取决于实现。该标准允许在将临时对象绑定(bind)到const引用时进行复制。在您的情况下,VC++仅在隐式定义构

c++ - 常量成员函数

看完this,据我所知,将方法声明为const可以防止它意外修改类的成员变量。const方法是否常用?是否应该将它们用于一切不应修改成员变量的情况? 最佳答案 是的,const应始终在适当的时候使用。它让您的编译器检查您的应用程序逻辑,静态断言const-correctness免费!有些人甚至说const应该是默认值,对于非常量,你应该被迫使用mutable。 关于c++-常量成员函数,我们在StackOverflow上找到一个类似的问题: https://s

c++ - 通过指向常量的指针释放内存是一种好习惯吗

有很多问题讨论了C和C++处理常量指针删除的细节,即free()不接受它们,delete和delete[]执行并且常量性不会阻止对象销毁。我感兴趣的是您是否认为这样做是一种好的做法,而不是语言(C和C++)所允许的。删除常量指针的参数包括:LinusTorvalds的kfree()与C的free()不同,它采用voidconst*参数,因为他认为释放内存不影响指向的内容。free()是在引入const关键字之前设计的。C++的删除运算符允许删除常量数据。反对它的论点包括:程序员不希望在向数据传递指向常量的指针时修改(或删除)数据。许多人认为指向const的指针意味着不获得数据的所有权(

c++ - 为什么我应该更喜欢类中的 static constexpr int 而不是类级整数常量的枚举?

C++17更新:staticconstexpr变量是隐式内联,因此不需要外部定义。原始问题:假设我有一个常量列表,例如structCls{staticconstexprintN=32;staticconstexprintM=64;};这当然建议我为这些添加定义以避免可能发生的ODR使用问题,因此我需要:constexprintCls::N;constexprintCls::M;为什么应该我更喜欢这个structCls{enum:int{N=32,M=64};};这让我免于ODR使用的麻烦,因为N和M更真实地只是常量,而不是对象本身(如果这是标题,那就更重要了-only)并且更短。我可以

c++ - const 参数 "real"是常量吗?

AFAIK从const变量中删除constness是未定义的行为:constinti=13;const_cast(i)=42;//UBstd::cout但是const函数参数是“真正的”常量吗?让我们考虑以下示例:voidfoo(constintk){const_cast(k)=42;//UB?std::cout似乎编译器没有对constintk应用与constinti相同的优化。第二个例子有UB吗?constintk是帮助编译器优化代码,还是编译器只检查const的正确性,仅此而已?Example 最佳答案 constinti=1

c++ - 是否可以根据模板参数的常量性有条件地启用模板类的非 const/const 数据成员?

是否可以根据模板参数的常量性有条件地启用模板类的非const/const数据成员?或者可能有一些条件类型定义?我考虑过将std::enable_if与std::is_const一起使用,但没有我可以使用的std::is_not_const。classA;templateclassTest{A&m_a;//IfT!=const.constA&m_a;//IfT==const.};请注意总是T!=A。 最佳答案 是的,您可以使用std::conditional:templateclassTest{typenamestd::conditi

c++ - std::apply 和常量表达式?

我在Wandbox中尝试了以下代码:#include#include#include#include#include#includeintmain(){constexprstd::arraystr{"123456789"};constexprautofoo=std::apply([](auto...args)constexpr{std::integer_sequence{};},str);std::cout编译器告诉我args...不是常量表达式。怎么了? 最佳答案 函数参数不能被标记为constexpr。因此,您不能在需要常量表达

c++ - 对于函数 : constexpr const or enum? 中的常量,我应该更喜欢哪个

我习惯用enum{my_const=123;来定义常量},因为在类中,使用staticconstexpr需要类定义之外的一些代码(参见thisquestion)。但是-在函数体中呢?最近我一直注意到人们只是在他们的函数中使用constexpr变量(实际上甚至不屑于const它们),我想知道我是否是一个落后的傻瓜我的时代intfoo(intx){enum:int{bar=456};returnx+bar;}所以,我的问题是:在函数体内使用枚举而不是constexpr变量有什么好处吗? 最佳答案 如果bar是constexprintba

C/C++ 中的 C++ 引用和常量指针

最近,当我向某人解释指针和引用(在C++编程的上下文中)之间的基本区别时,我告诉了通常的解释,这些解释讨论了不同的函数参数传递约定——按值调用、按指针调用、按引用调用,以及所有关于引用的相关理论。但后来我想到无论C+引用在参数传递方面做了什么,(允许一种传递大型结构/对象的内存有效方式,同时通过不允许被调用者修改传递的对象的任何变量来保证它的安全作为引用,如果我们的设计需要的话)C中的const指针可以实现相同的目的,例如如果需要传递结构指针,比如structmystr*ptr,通过将结构指针强制转换为常量-func(int,int,(conststructmystr*)(ptr));

c++ - 类中未初始化的常量成员

这可能是一个非常简单的问题,但我一直在寻找答案有一段时间了,但似乎无法弄清楚。我试图在一个类中初始化一个常量变量常量指针。这是头文件:classScheduler{public:Scheduler();explicitScheduler(unsignedlong*);private:constunsignedlong*constthresh;};这是类的构造函数Scheduler::Scheduler(unsignedlong*threshold):thresh(threshold){}当我尝试编译这段代码时遇到了这个错误:scheduler.cpp:Inconstructor‘Sch